Chrome Extension
activeTab
tabs でなく activeTab permission で以下のよく使うやつは実行できる
chrome.tabs.query({ active: true, currentWindow: true }, tabs => { const activeTab = tabs[0]; ... }
optional_permissions
ユーザ操作で限定的に Permission もらうのに使える。
全サイトの Permission もらわずにユーザの許可を得て任意のページに content script 入れるのもできる。
たとえば manifest.json で宣言しておいて以下のようにして必要なサイトだけ permission を貰える。
code:manifest.json
"optional_permissions": ["http://*/*", "https://*/*"]
code:beg_perm.js
// ...
const origin = new URL(activeTab.url).origin + '/*';
chrome.permissions.request({
origins: origin
}, (res) => {
console.log(res); // true or false
});
事前に optional_permissions で宣言してないやつをもらうのはできない
一度 permission もらったら次回以降はダイアログなしに true が返る
複数の Chrome で同期されるのかはまだわかってない
変化をチェックするには chrome.permissions.{onAdded, onRemoved} を listen する
hrome.permissions.getAll(cb) の引数
めも
https://gyazo.com/6b165a25e2c137768d9e3d9f3de18e8f
context menu の動的更新
未確認
例えば設定で入力した URL パターンならこのコンテキストメニューが使える、みたいなのを表現する
content script で addEventListener("contextmenu", ...) を Listen すればコンテキストメニュー開いたのを知れる
そこで event page に通信するなりして設定をゲット、chrome.contextMenu.create や update を呼び出す
contextmenu 閉じたら元の状態に戻すなり開くたび計算するなりしないと複数のタブで条件が異なる時に変なことになりそう
Chrome Extension でユーザ入力を eval する
#dev #Chrome